package com.admin_system.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;

/**
 * Spring Security配置类（备用）
 * 此配置类已被WebSecurityConfig替代，当前未启用
 * 
 * 背景说明：
 * - Spring Security 5.7.0+不再推荐使用WebSecurityConfigurerAdapter
 * - 新版本推荐使用SecurityFilterChain Bean的方式配置安全性
 * - 当前项目已在WebSecurityConfig中实现了基于JWT的身份验证
 * 
 * 注意事项：
 * - 此类保留作为参考和未来迁移的基础
 * - 如需启用，请移除WebSecurityConfig中的相关配置
 * - 将来可以考虑将WebSecurityConfig的功能迁移到此类中
 */
//@Configuration
//@EnableWebSecurity
public class SecurityConfig {
    
    /**
     * 密码编码器Bean
     * 使用BCrypt算法对密码进行单向哈希加密
     * 该Bean已在WebSecurityConfig中定义，为避免冲突，此处注释掉
     * 
     * @return BCrypt密码编码器实例
     */
    /*@Bean
    public BCryptPasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }*/
    
    /**
     * 安全过滤器链配置
     * 定义HTTP请求的安全性约束
     * 
     * 主要配置：
     * - 禁用CSRF保护（适用于无状态API）
     * - 所有请求放行（需根据实际需求调整）
     * - 禁用默认登录表单
     * - 禁用基本认证
     * - 使用无状态会话管理
     * 
     * @param http HttpSecurity配置对象
     * @return 配置好的SecurityFilterChain
     * @throws Exception 如果配置过程中发生错误
     */
    /*@Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            // 禁用CSRF
            .csrf().disable()
            // 设置所有请求都不需要认证
            .authorizeRequests()
                .anyRequest().permitAll()
            .and()
            // 禁用默认登录表单
            .formLogin().disable()
            // 禁用HTTP Basic认证
            .httpBasic().disable()
            // 使用无状态会话
            .sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS);
        
        return http.build();
    }*/
    
    /**
     * 跨域资源共享配置
     * 定义允许跨域访问的规则
     * 
     * 主要配置：
     * - 允许所有来源的请求
     * - 允许常见的HTTP方法
     * - 允许所有请求头
     * - 暴露特定响应头给客户端
     * - 允许发送凭证（如Cookie）
     * - 预检请求结果缓存1小时
     * 
     * @return 配置好的CorsConfigurationSource
     */
/*    @Bean
    public CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowedOriginPatterns(Arrays.asList("*"));
        configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE", "OPTIONS"));
        configuration.setAllowedHeaders(Arrays.asList("*"));
        configuration.setExposedHeaders(Arrays.asList("X-Oversized-Classes", "Content-Disposition"));
        configuration.setAllowCredentials(true);
        configuration.setMaxAge(3600L);
        
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }*/
} 